package com.icoolkj.ms.common.security;

import com.icoolkj.ms.api.auth.bo.UserInfoInTokenBO;

/**
 * @author icoolkj
 * @version 1.0
 * @description 获取当前线程变量中的 用户id、用户名称、Token等信息
 *  * 注意： 必须在网关通过请求头的方法传入，同时在HeaderInterceptor拦截器设置值。 否则这里无法获取
 * @createDate 2025/02/09 16:40
 */
public class AuthUserContext {

    private static ThreadLocal<UserInfoInTokenBO> USER_INFO_IN_TOKEN_HOLDER = new ThreadLocal<>();

    public static UserInfoInTokenBO get() {
        return USER_INFO_IN_TOKEN_HOLDER.get();
    }

    public static void set(UserInfoInTokenBO userInfoInTokenBo) {
        USER_INFO_IN_TOKEN_HOLDER.set(userInfoInTokenBo);
    }

    public static void clean() {
        if (USER_INFO_IN_TOKEN_HOLDER.get() != null) {
            USER_INFO_IN_TOKEN_HOLDER.remove();
        }
    }

}
